package com.ftg.learn.controller;

import com.ftg.learn.dao.Image;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

@RestController
public class ImageController {


    /*以下是文件上传部分  在提交全部弹框信息之前就应该将图片上传到服务器 然后将存储后的路径返回给前台 前台点击提交 将图片的存储路径保存*/
    @SuppressWarnings("deprecation")
    @RequestMapping("/upload")
    @ResponseBody
    public Image uplpad(@RequestParam("file") MultipartFile file, HttpServletRequest request) {
        System.out.println(file.getOriginalFilename());
        String desFilePath = "";         //图片保存路径
        String oriName = "";             //原文件名
        Image result = new Image();
        Map<String, String> dataMap = new HashMap<>();
        Image image = new Image();
        try {
            // 1.获取原文件名
            oriName = file.getOriginalFilename();

            // 2.获取原文件图片后缀，以最后的.作为截取(.jpg)
            String extName = oriName.substring(oriName.lastIndexOf("."));

            // 3.生成自定义的新文件名，这里以UUID.jpg|png|xxx作为格式（可选操作，也可以不自定义新文件名）
            String uuid = UUID.randomUUID().toString();
            String newName =oriName;

            // 4.获取要保存的路径文件夹

            String realPath = "D:\\shopping\\photos";
//            String realPath = "G:\\mavenproject\\siyuan2\\myfirstproject\\src\\main\\resources\\static\\photos";
            // 5.保存图片

            desFilePath = realPath + "\\" + newName;                //保存路径
            File desFile = new File(desFilePath);                   //创建文件
            file.transferTo(desFile);

            // 6.返回保存结果信息
            result.setCode(0);                                      //保存状态码 成功 0 失败 1
            dataMap = new HashMap<>();
            dataMap.put("src", "http://localhost:10010/photos/"+newName); //保存真实路径
            result.setData(dataMap);                                //保存信息
            result.setMsg(oriName + "上传成功！");                  //返回提示信息
            return result;

        } catch (IllegalStateException e) {
            image.setCode(1);
            System.out.println(desFilePath + "图片保存失败");
            return image;
        } catch (IOException e) {
            image.setCode(1);
            System.out.println(desFilePath + "图片保存失败--IO异常");
            return image;
        }
    }
}
